1. Technical Field of the Invention
The present invention relates to a coding apparatus for generating the secondary-coded bit streams by recoding the primary-coded bit streams of the previously compressed-coded video signal, for example, to reduce an amount of data. More particularly, the present invention relates to a coding apparatus capable of generating the secondary-coded bit streams, in which the influence of the code amount controlling unit for the primary-coded bit streams can be suppressed and which have uniform picture quality, by calculating an image complexity using the code amount and the quantization coefficients of the primary-coded bit streams every block, then setting a target code amount every block based on the value, and then recoding the bit streams to mate with the target code amount.
2. Description of the Related Art
In the prior art, if image information are transmitted/stored in the digital image process system or the digital image service system, an amount of information can be reduced by coding the image information and then the coded bit streams whose amount of information are reduced are transmitted/stored.
Meanwhile, in recent years, the applications have been increased which generate the secondary-coded bit streams by decoding the image information from the primary-coded bit streams, in which the image are compressed-coded previously, and recoding such image information under different coding conditions with the higher compression ratio, etc., and then transmit/store such secondary-coded bit streams.
For example, in the case where the image information are broadcasted, the cascade transmission of the digital signal, i.e., hierarchical transmission to process one image in plural times is now carried out while executing the edit processes such as collection of image material, primary distribution between the TV stations, secondary distribution to homes, etc. It is expected that, as a variety of broadcasting modes are going to be utilized, the transmission system that differs from the hierarchical transmission and has higher degree of freedom will be spread.
Also, it is expected that, as for the video clip which are stored in the image database, etc. and are expected to be utilized as the library, video sources are provided from many users and utilized by many users at the same time, and also are transmitted/stored again and again while executing the edit of them.
In this manner, the conventional cascade-connected coding system for performing the coding and the decoding in many times is constructed by cascade-connecting the units for performing the coding and the decoding only once as they are to execute the recoding. Hence, upon recoding, the coding using parameters peculiar to the recoding apparatuses is also performed, and thus the coding history of the object image is not considered at all. That is, for example, in the prior art, the processes that take account of only the compression ratio, etc. of the recoding apparatus have been performed upon recoding.
Also, as another example of the recoding application, reproducing/recording on the digital VDR (Video Disc Recorder) may be considered. In the case of this example of the application, the video streams are broadcasted to the user""s home at a certain broadcasting quality (e.g. , quality which corresponds to a bit rate of 6 Mbps for the standard definition video such as xe2x80x9calmost NTSCxe2x80x9d or 24 Mbps for the high-definition video such as xe2x80x9calmost Hi-visionxe2x80x9d). In other words, when receiving these video streams, the user records the video data at a high coding rate, which is similar to the extended reproducing EP mode (long time mode) of the existing home video tape recorder, e.g., the VHS recorder, by using the recoding function of the digital VDR, and thus a number of video programs of low quality are recorded in the digital VDR.
However, only information of higher quality among original signals must be actively employed as much as possible upon recoding. Thus, the picture quality of new signals obtained at a lower bit rate is also requested to have the quality as high as possible. More particularly, in the unit which repeats the coding and the decoding in plural times, preferably the picture quality of the signals obtained by repeating the coding and the decoding in plural times should be set close to the picture quality of the signals which are generated by coding the original video source at a reduced rate only once, for example, as much as possible.
A schematic configuration of the recoding apparatus in the prior art, which generate the secondary-coded bit streams by decoding the primary-coded bit streams being coded previously and then recoding them so as to reduce an amount of data, is shown in FIG. 1.
In this example in FIG. 1, merely major functional elements are illustrated to show a general operation of the recoding apparatus. For example, various type data are contained in the compressed video signal, and only a part of these data are quantized. Other data are caused to detour the requantizing or recoding unit and then multiplexed again with the recoded data in the multiplexer 106. Since it is publicly known generally that the multiplexer 106 is needed to execute the above function and the multiplexing function of the multiplexer 106 is also publicly known, their explanation will be omitted in this disclosure.
In FIG. 1, the primary-coded bit streams that have already been compressed or coded are input into the coded video input terminal 100. That is, these primary-coded bit streams correspond to the signals that are to be recoded in the recoding apparatus shown in FIG. 1.
Here, assume that the primary-coded bit streams to be recoded are the block-coded signals. That is, respective images are divided into a plurality of blocks or macroblocks prior to the coding and then compressed by the predetermined compressing and coding approach every block or macroblock. Therefore, the streams of blocks or macroblocks that are coded at least partially as above are supplied to the coded video input terminal 100. Also, assume that at least a part of the data in respective macroblocks are quantized and are variable-length-coded. As the representative example of the above compressed coding approach, so-called MPEG (Moving Picture Experts Group) 1 system, MPEG 2 system, etc. may be listed.
The above-mentioned primary-coded bit streams being input into the coded video input terminal 100 are then supplied to the variable-length decoder (VLD) 101 that executes the variable-length decoding. In the example in FIG. 1, such a configuration is illustrated that motion vectors contained in the bit streams and other code words which are not quantized are not supplied to the circuits in the succeeding stage (the inverse-quantizing unit (Qxe2x88x921) 103, the quantizing unit (Q) 104, and the variable-length coding unit (VLC) 105) so as to detour them. However, for example, if these units in the succeeding stage (the inverse-quantizing unit 103, the quantizing unit 104, and the variable-length coding unit 105) can be conditioned not to react with signal components which are not. to be changed according to the recoding apparatus, actually these motion vectors and other code words which are not quantized may be set to pass through these units in the succeeding stage (the inverse-quantizing unit 103, the quantizing unit 104, and the variable-length coding unit 105). The code words that are variable-length-decoded by the variable-length decoding unit 101 are delayed by the delay unit 102 by a predetermined time, and then supplied to the inverse-quantizing unit 103.
The inverse-quantizing unit 103 reconstructs the signal components, which are quantized in the compression process, by inverse-quantizing the code words that are subjected to the variable-length decoding. The signal components which are inverse-quantized by the inverse-quantizing unit 103 are then supplied to the quantizing unit 104.
The quantizing unit 104 quantizes (requantizes) signal components being supplied from the inverse-quantizing unit 103 under control of the rate controller 109. At this time, the rate controller 109 controls the quantizing unit 104 such that the secondary-coded bit streams which are recoded to mate with a desired reduced rate can be generated. That is, in the case of this example, the control in recoding by the rate controller 109 is done by supplying quantization values from the rate controller 109 to the quantizing unit 104 such that quantized signals of respective code words which are coarse rather than the original compressed-coding process applied to the primary-coded bit streams can be obtained. The code words that are quantized in the quantizing unit 104 once again are supplied to the variable-length coding unit (VLC) 105.
The variable-length coding unit 105 variable-length-codes the requantized code words, and then supplies the code words obtained after the variable-length coding process to the multiplexer 106.
The multiplexer 106 generates reformatted signals by multiplexing the code words which are obtained after the variable-length coding process with signal components which are not subjected to the recoding because they take a detour via the analyzer 110. The reformatted signals are supplied to the rate buffer 107.
Normally such reformatted signals are burst-like signals. The rate buffer 107 converts the burst-like signals into the constant rate signal. At this time, there is provided to the rate buffer 107 an occupation monitor which supplies the control signal to control the rate controller 109 such that the quantizing unit 104 is conditioned to generate the constant rate signal. The signals that are converted into the constant rate signal by the rate buffer 107 are output from the coded video output terminal 108 as the secondary-coded bit streams that are recoded by the recoding apparatus in FIG. 1.
By the way, in the case of the video compression according to the MPPEG system, the matrix of quantization values and the quantization coefficients are needed in quantization. The matrix of quantization values is decided in compliance with psychological visual parameters. Also, the matrix of quantization values has values corresponding to discrete cosine transform (DCT) coefficients respectively, and normally the matrix is used commonly to quantize all macroblocks in the frame. Meanwhile, the quantization coefficients are peculiar to the macroblock. That is, the quantization coefficients are fitted only to the macroblock to which the concerned quantization coefficients are allocated. Also, the quantization coefficients are utilized to weight all quantization values in the matrix before the matrix is employed to quantize respective macroblocks. In this case, the generation of the quantization parameters means normally the generation of the above quantization coefficients in the following explanation.
The processes in the recoding apparatus in FIG. 1 will be explained in more detail with reference to a flowchart in FIG. 2.
To begin with, the recoding apparatus acquires a new picture (frame) from the primary-coded bit streams as the process in step S100.
Then, the analyzer 110 calculates AC discrete cosine transform coefficients and also counts all coded bits xcexa3(TB) for respective frames, to be described later, as the process in step S101.
Then, in the recoding apparatus, the variable-length decoding unit 101 executes the variable-length decoding and analysis of the frame as the process in step S102.
Here, the variable-length decoding unit 101 is transparent to the code words that have not been subjected to the variable-length coding to thus pass such code words which have not been subjected to the variable-length coding as they are. For example, since the variable-length-coded code words in the signals of the MPEG do not have defined boundaries, the variable-length decoding unit 101 defines boundaries between respective code words and identifies the code words by using the type. The code words determined to have not been subjected to the variable-length coding by the analysis of the variable-length decoder 101 are not actually decoded. Thus, the analyzed pictures to which identifiers are affixed are stored in the delay unit 102 as the process in step S103. The code words analyzed to have not been subjected to the variable-length coding are supplied to the analyzer 110.
In the case of the above example, the profile generating portion 111 in the analyzer 110 generates profiles of the AC discrete cosine transform (DCT) coefficients for overall macroblocks of the compressed frames (fields, images, or the like).
That is, first the profile generating portion 111 in the analyzer 110 generates a present sum of the AC discrete cosine transform coefficient bits every macroblock as the process in step S105, and then stores respective sums which are identified by the macroblock number in the memory 112 as the process in step S104.
Here, a sum for the first macroblock MB1 in the frame (picture) is all bit sum (xcexa3MBAC1)of all bit AC discrete cosine transforms in the first macroblock MB1. Also, a sum for the second macroblock MB2 in the frame is an added value of the sum (xcexa3MBAC1) in the first macroblock MB1 and all bit sum (xcexa3MBAC2) of all bit AC discrete cosine transforms in the second macroblock MB2. Further, a sum for the third macroblock MB3 in the frame is an added value of the sum (xcexa3MBAC1) in the first macroblock MB1, the sum (xcexa3MBAC2) in the second macroblock MB2, and all bit sum (xcexa3MBAC3) of all bit AC discrete cosine transforms in the third macroblock MB3, i.e., a value of (xcexa3MBAC1)+(xcexa3MBAC2)+(xcexa3MBAC3). In FIG.3, graphs (expressed as profiles) of all AC coefficients and new target AC coefficient code amount are illustrated, wherein an abscissa denotes the i-th macroblock number MBi in the recoded frame and an ordinate denotes the sum (xcexa3MBACi) in the i-th macroblock number MBi.
Also, in addition to the above AC discrete cosine transform coefficients, the analyzer 110 counts all coded bits xcexa3(TB) for respective frames as the process in step S101.
Then, the analyzer 110 decides whether or not the analysis of all macroblocks for respective frames has been completed, as the process in step S106. Then, if all macroblocks have been analyzed, the analyzer 110 calculates a new target value TVAC of the AC discrete cosine transform per frame in compliance with the relation given by following Eq.(1), as the process in step S108.
TVAC=(xcexa3MBAClast)xe2x88x92%xc3x97xcexa3(TB)xe2x88x92BEXCESSxe2x80x83xe2x80x83(1)
Where (xcexa3MBAClast) in Eq.(1) is a sum of the AC discrete cosine transform coefficients up to the last macroblock, and corresponds to a total amount of data of the AC discrete cosine transform bits in the frame. Also, xcexa3(TB) in Eq.(1) is all coded bits in the frame, and represents difference between the code amount generated in the preceding frame and the target code amount. Further, % in Eq.(1) is a ratio for reducing a rate of the coded bit stream. For example, if the code amount which is not dependent on the quantization coefficients (quantization-coefficient-independent code amount) is 2.0 Mbps when the primary-coded bit stream P of 8 Mbps is recoded into the secondary-coded bit stream S of 4 Mbps, the quantization-coefficient-dependent code amount of the primary-coded bit frame P which is to be recoded becomes 6.0 Mbps. Therefore, the secondary-coded bit stream S as the result of the recoding is 4xe2x88x922=2 Mbps, and thus the quantization-coefficient-dependent code amount can be reduced from 6 Mbps to 2 Mbps. Accordingly, % in Eq.(1) can be given by
%=(1xe2x88x922/6)=2/3xe2x80x83xe2x80x83(2)
Then, the scaling of the profile of the AC discrete cosine transform bits is carried out based on a coefficient ratio given by Eq.(3), as the process in step S109.
ratio=TVAC/xcexa3MBAClastxe2x80x83xe2x80x83(3)
In order to get the profiles that are linearly scaled as shown in FIG.3, such scaling is performed by multiplying the sum (xcexa3MBACi) by the coefficients ratio respectively. In other words, the scaling is carried out based on Eq.(4).
TVACi=ratio*xcexa3MBACixe2x80x83xe2x80x83(4)
Where TVAci in Eq.(4) is the target code amount until the i-th macroblock Mbi.
Then, the sum (xcexa3MBACi) can be replaced with the scaled sum in the memory 112, as given by following Eq.(5).
TVACi=TVAC/xcexa3MBAClast*xcexa3MBACixe2x80x83xe2x80x83(5)
After the profiles have been scaled as described above in the recoding apparatus in FIG. 1, the code words which have been analyzed but have not been subjected to the variable-length coding respectively are input/output into/from the memory 112 in macroblock unit at a time. The code words that have not been subjected to the AC discrete cosine transform are supplied to the multiplexer 106. The multiplexer 106 constructs essentially the outputs once gain.
Also, the analyzer 110 conditions the memory 112 to send the code words to the rate buffer 107, and also conditions the rate buffer 107 to receive a limited amount of the code words per macroblock.
The target code amount TVAClast derived finally until the final macroblock is supplied to the rate controller 109 to recode the current frame.
Further, the signals that are variable-length-coded by the variable-length decoding unit 101 and stored in the delay unit 102 once are accessed by the delay unit 102 and then inversely quantized by the inverse-quantizing unit 103 as the process in step S110. Then, under control of the rate controller 109 which employs the target code amount TVAClast calculated as above, the signals are requantized by the quantizing unit 104 to mate with the target code amount TVAClast, and then variable-length-coded by the variable-length coding unit 105, as the process in step S111.
Now, quantization coefficients Q employed in requantization in the quantizing unit 104 will be set as follows.
In the recoding apparatus in FIG. 1, an evaluation value (QNi) of the quantization coefficients Q in the i-th macroblock MBi is set, as the process in step S112. A new quantization coefficients QNi of the i-th macroblock Mbi can be expresses by Eq.(6).
Qni=QMBin/(1-%)xe2x80x83xe2x80x83(6)
Where QMBin is input quantization coefficients. This Eq.(6) can be satisfied under the assumption that the quantization coefficients are in inverse proportion to the generated code amount.
In the process procedures in FIG. 2, after the evaluation value (QNi) of the quantization coefficients Q in the i-th macroblock MBi has been acquired in the process in step S112, the non-quantized macroblock Mbi is accessed from the delay unit 102, as the process in step S113.
Then, in the quantizing unit 104 of the recoding apparatus in FIG.1, the i-th macroblock Mbi is quantized by using the evaluated quantization coefficients (QNi), as the process in step S114.
Then, in the variable-length coding unit 105 of the recoding apparatus in FIG. 1, the macroblock quantized by the quantizing unit 104 is variable-length-coded, as the process in step S115.
Next, in the process procedure in FIG. 2, new all bits xcexa3MBACin for the macroblock are added, as the process in step S116. Then, the code words of the requantized macroblock are reconstructed, as the process in step S117. Then, in order to form a profile value xcexa3(xcexa3MBACin)i of present macroblock of the coded bit streams which are requantized and recorded, bit sums xcexa3MBACin are added to bit sums of the previously quantized macroblock.
Then, a difference between the new profile value xcexa3(xcexa3MBACin)I and the original scaled profile value xcexa3(xcexa3MBACi)I is calculated based on following Eq.(7) to generate a value xcex94E of bit error, as the process in step S119.
error xcex94E=xcexa3xcexa3MBACixe2x88x92xcexa3xcexa3MBACinxe2x80x83xe2x80x83(7)
Then, the bit error xcex94E is compared with a threshold value xcex94ETH, as the process in step S120. If the bit error xcex94E is larger than the threshold value xcex94ETH in the comparison in step S120, new quantization coefficients QNi is calculated as the process in step S121. As an example, the new quantization coefficients QNi is calculated in compliance with the relationship in following Eq.(8).
Qni=Qni+sgn(xcex94E)xe2x80x83xe2x80x83(8)
In this case, QNi in Eq.(8) corresponds to the last qunatization coefficients employed in the i-th macroblock and is equal to QNi in the first path, and sgn(xcex94E) in Eq.(8) coincides with xc2x11 respectively if the bit error xcex94E is positive and negative. More particularly, QNi calculated as Qni=QMBin/(1-%) based on Eq.(8) can be given by Eqs.(9) and (10).
xcex94E less than 0: Qni=Qni+1xe2x80x83xe2x80x83(9)
xcex94E greater than 0: Qni=Qnixe2x88x921xe2x80x83xe2x80x83(10)
After the process in step S121, the i-th macroblock Mbi is accessed again by the delay unit 102 as the process in step S113, and then requantized by using the new quantization coefficients QNi as the process in step S114. The processes in step S113 to step S121 are repeated until the bit error xcex94E becomes smaller than the threshold value xcex94ETH.
In contrast, if it is decided in step S120 that the bit error xcex94E is smaller than the threshold value xcex94ETH, it is decided whether or not all macroblocks in the frame have been requantized, as the process in step S122. If it is decided in step S122 that all macroblocks in the frame have not been requantized, the number of the i-th macroblock (index i) is incremented one by one as the process in step S118. Then, the process returns to step S112 and the requantizing process of the (i+1)-th macroblock Mb(i+1) is started.
On the contrary, if it is decided in step S122 that all macroblocks in the frame have been requantized, the process of the recoding apparatus jumps to step S100 and then the process of the succeeding frame is started.
By the way, in the foregoing recoding apparatus in the prior art, the problem hardly occurs if the original primary-coded bit streams are coded in requantization according to the optimal distribution method of the code amount. However, it cannot always be detected whether or not such original primary-coded bit streams can be coded under the optimal distribution of code amount, for the case may be considered where, in order to control the bit streams into a certain restricted transfer rate according to a generated bit amount in the preceding primary coding, the bit streams have been subjected to the rate control based on the quantization coefficients and thus such bit streams have been coded by using the quantization coefficients which are different from the quantization coefficients essentially employed to make the picture quality uniform. Therefore, the uniform picture quality (substantially the uniform in-picture quantizing scale) cannot be obtained because of such rate control. As a result, in some cases the coding distortion due to the compression becomes remarkable if the bit streams are recoded.
The present invention has been made in view of the above subjects, and it is an object of the present invention to provide a coding apparatus capable of generating the secondary-coded bit streams which contain less picture quality degradation after the recoding, by executing the optimum in-picture code amount distribution to make the picture quality uniform when the primary-coded bit streams in which the image data do not exist prior to the compressing and coding is recoded.
In order to achieve the above object, there is provided a coding apparatus for generating secondary-coded bit streams by decoding primary-coded bit streams which are coded and then recoding the decoded primary-coded bit streams, comprising: a bit stream introducing means for introducing primary-coded bit streams at least in predetermined units; a coding difficulty degree calculating means for calculating a degree of difficulty in coding a predetermined block in the predetermined units; a profile generating means for generating accumulative profiles based on the degree of difficulty in the coding; and a scaling means for executing scaling of the profiles every predetermined block.
According to the coding apparatus according to the present invention, in the case that the secondary-coded bit streams which do not include data prior to the coding are recoded by introducing the primary-coded bit streams at least in predetermined units, then calculating a degree of difficulty in coding a predetermined block in the predetermined units, then generating accumulative profiles based on the degree of difficulty in the coding, and then executing the scaling of the profiles every predetermined block, it is possible to generate the secondary-coded bit streams which contain small degradation of the quality.
In the preferred embodiment of the present invention, the coding difficulty degree calculating means calculates the degree of difficulty in the coding based on orthogonal transformation coefficients of the predetermined block.
According to this embodiment, since the coding difficulty degree is calculated based on the orthogonal transformation coefficients of the predetermined blocks, the data prior to coding can be estimated based the primary-coded bit streams which do not contain the data prior to the coding. As a result, it is possible to generate the secondary-coded bit streams that contain small degradation of the quality.
In the preferred embodiment of the present invention, the coding difficulty degree calculating means calculates the degree of difficulty in the coding by using a sum of code amounts of all predetermined blocks at least in the predetermined units and quantization coefficients of each predetermined block.
According to this embodiment, since the coding difficulty degree is calculated by using a sum of code amounts of all predetermined blocks at least in the predetermined units and quantization coefficients of each predetermined block, the data prior to coding can be estimated based the primary-coded bit streams which do not contain the data prior to the coding. As a result, it is possible to generate the secondary-coded bit streams that contain small degradation of the quality.
In the preferred embodiment of the present invention, a sum of code amount of all predetermined blocks in the predetermined units represents a code amount of orthogonal transformation coefficients which are dependent on quantization coefficients of each predetermined block in the predetermined units.
According to this embodiment, since a sum of code amount of all predetermined blocks in the predetermined units represents a code amount of orthogonal transformation coefficients that are dependent on quantization coefficients of each predetermined block in the predetermined units, a degree of difficulty in coding can be easily calculated. As a result, the data prior to the coding can be easily estimated and the secondary-coded bit streams that contain small degradation of the quality can be generated.
In the preferred embodiment of the present invention, a difference between a code amount obtained by recoding at least one predetermined unit and a current target code amount is added to a next target code amount in predetermined units to be recoded in future.
According to this embodiment, since a difference between a code amount obtained by recoding at least one predetermined unit and a current target code amount is added to a next target code amount in predetermined units to be recoded in future, the high quality secondary-coded bit streams can be generated by suppressing sudden degradation of the quality when the primary-coded bit streams which include no data prior to the coding are recoded.
In the preferred embodiment of the present invention, a value obtained by dividing difference between a code amount generated in preceding predetermined units and the target code amount by a total sum of the target code amounts of respective predetermined units is distributed to the target code amount of at least one predetermined unit.
According to this embodiment, since the value obtained by dividing difference between the code amount generated in preceding predetermined units and the target code amount by the total sum of the target code amounts of respective predetermined units is distributed to the target code amount of at least one predetermined unit, propagation of the error in predetermined unit can be distributed. Thus, when the primary-coded bit streams which include no data prior to the coding are recoded, the high quality secondary-coded bit streams can be generated by suppressing sudden degradation of the quality.
Also, in order to achieve the above object, there is provided a coding apparatus for generating secondary-coded bit streams by decoding primary-coded bit streams which are coded and then recoding the decoded primary-coded bit streams, comprising: a bit stream introducing means for introducing primary-coded bit streams at least in predetermined units; and a scaling means for scaling of each predetermined block in the predetermined units based on a code amount of orthogonal transformation coefficients of the predetermined block, wherein a lowest target code amount is set for the code amount of the orthogonal transformation coefficients in the predetermined units.
According to the coding apparatus according to the present invention, since the lowest target code amount is set for the code amount of the orthogonal transformation coefficients in the predetermined units by introducing primary-coded bit streams at least in predetermined units, and then executing the scaling of each predetermined block in the predetermined units based on the code amount of orthogonal transformation coefficients of predetermined block, oscillation which is ready to occur when the error of the code amount is small can be prevented when the primary-coded bit streams which include no data prior to the coding are recoded. Thus, it is possible to generate easily the secondary-coded bit streams that contain small degradation of the quality.
In the preferred embodiment of the present invention, a difference between a code amount obtained by recoding at least one predetermined unit and a current target code amount is added to a next target code amount in predetermined units to be recoded in future.
According to this embodiment, since a difference between a code amount obtained by recoding at least one predetermined unit and a current target code amount is added to a next target code amount in predetermined units to be recoded in future, the high quality secondary-coded bit streams can be generated by suppressing sudden degradation of the quality when the primary-coded bit streams which include no data prior to the coding are recoded.
In the preferred embodiment of the present invention, a value obtained by dividing difference between a code amount generated in preceding predetermined units and the target code amount by a total sum of the target code amounts of respective predetermined units is distributed to the target code amount of at least one predetermined unit.
According to this embodiment, since the value obtained by dividing difference between the code amount generated in preceding predetermined units and the target code amount by the total sum of the target code amounts of respective predetermined units is distributed to the target code amount of at least one predetermined unit, propagation of the error in predetermined unit can be distributed. Thus, when the primary-coded bit streams which include no data prior to the coding are recoded, the high quality secondary-coded bit streams can be generated by suppressing sudden degradation of the quality.
The nature, principle and utility of the invention will become more apparent from the following detailed description when read in conjunction with the accompanying drawings.